1. Field of the Invention
The present invention relates generally to file servers and data processing networks. The present invention more particularly relates to a file server permitting concurrent writes from multiple clients to the same file. The invention specifically relates to increasing the single file write throughput of such a file server.
2. Description of the Related Art
Network data storage is most economically provided by an array of low-cost disk drives integrated with a large semiconductor cache memory. A number of data mover computers are used to interface the cached disk array to the network. The data mover computers perform file locking management and mapping of the network files to logical block addresses of storage in the cached disk array, and move data between network clients and the storage in the cached disk array.
Data consistency problems may arise if multiple clients or processes have concurrent access to read-write files. Typically write synchronization and file locking have been used to ensure data consistency. For example, the data write path for a file has been serialized by holding an exclusive lock on the file for the entire duration of creating a list of data buffers to be written to disk, allocating the actual on-disk storage, and writing to storage synchronously. Unfortunately, these methods involve considerable access delays due to contention for locks not only on the files but also on the file directories and a log used when committing data to storage. In order to reduce these delays, a file server may permit asynchronous writes in accordance with version 3 of the Network File System (NFS) protocol. See, for example, Vahalia et al. U.S. Pat. No. 5,893,140 issued Apr. 6, 1999, entitled “File Server Having a File System Cache and Protocol for Truly Safe Asynchronous Writes,” incorporated herein by reference. More recently, byte range locking to a file has been proposed in version 4 of the NFS protocol. (See NFS Version 3 Protocol Specification, RFC 1813, Sun Microsystems, Inc., June 1995, incorporated herein by reference, and NFS Version 4 Protocol Specification, RFC 3530, Sun Microsystems, Inc., April 2003, incorporated herein by reference.)
Asynchronous writes and range locking alone will not eliminate access delays due to contention during allocation and commitment of file metadata. A Unix-based file in particular contains considerable metadata in the inode for the file and in indirect blocks of the file. The inode, for example, contains the date of creation, date of access, file name, and location of the data blocks used by the file in bitmap format. The NFS protocol specifies how this metadata must be managed. In order to comply with the NFS protocol, each time a write operation occurs, access to the file is not allowed until the metadata is updated on disk, both for read and write operations. In a network environment, multiple clients may issue simultaneous writes to the same large file such as a database, resulting in considerable access delay during allocation and commitment of file metadata.